The present invention is related to the field of computer graphics, and in particular to volume graphics.
Volume graphics is the sub-field of computer graphics that deals with the visualization of objects or phenomena represented as sampled data in three or more dimensions. These samples are called volume elements, or "voxels," and contain digital information representing physical characteristics of the objects or phenomena being studied.
For example, voxel values for a particular object or system may represent density, type of material, temperature, velocity, or some other property at discrete points in space throughout the interior and in the vicinity of that object or system.
Volume rendering is the part of volume graphics concerned with the projection of volume data as two-dimensional images for purposes of printing, display on computer terminals, and other forms of visualization. By assigning colors and transparency to particular voxel data values, different views of the exterior and interior of an object or system can be displayed. For example, a surgeon needing to examine the ligaments, tendons, and bones of a human knee in preparation for surgery can utilize a tomographic scan of the knee and cause voxel data values corresponding to blood, skin, and muscle to appear to be completely transparent. The resulting image then reveals the condition of the ligaments, tendons, bones, etc. which are hidden from view prior to surgery, thereby allowing for better surgical planning, shorter surgical operations, less surgical exploration and faster recoveries. In another example, a mechanic using a tomographic scan of a turbine blade or welded joint in a jet engine can cause voxel data values representing solid metal to appear to be transparent while causing those representing air to be opaque. This allows the viewing of internal flaws in the metal that would otherwise be hidden from the human eye.
Real-time volume rendering is the projection and display of volume data as a series of images in rapid succession, typically at 30 frames per second or faster. This makes it possible to create the appearance of moving pictures of the object, phenomenon, or system of interest. It also enables a human operator to interactively control the parameters of the projection and to manipulate the image, while providing to the user immediate visual feedback. It will be appreciated that projecting tens of millions or hundreds of millions of voxel values to an image requires enormous amounts of computing power. Doing so in real-time requires substantially more computational power.
Further background on volume rendering is included in a Doctoral Dissertation entitled "Architectures for Real-Time Volume Rendering" submitted by Hanspeter Pfister to the Department of Computer Science at the State University of New York at Stony Brook in December 1996, and in U.S. Pat. No. 5,594,842, "Apparatus and Method for Real-time Volume Visualization." Additional background on volume rendering is presented in a book entitled "Introduction to Volume Rendering" by Barthold Lichtenbelt, Randy Crane, and Shaz Naqvi, published in 1998 by Prentice Hall PTR of Upper Saddle River, New Jersey.
A number of techniques are available for transforming the three-dimensional set of voxels representing the object into spatial coordinates in front of or behind the viewing surface. These techniques essentially compute the color and intensity of light at discrete points or "pixels" on the viewing surface. For instance, one technique converts the three-dimensional data set into a "texture map" stored in memory. The concept of texture mapping is well known in the computer graphics art. This map is then employed to "paint" a series of parallel planes, each perpendicular to the viewing axis and appearing to be a cross-section of the object in question. The planes are then mathematically combined by a computer system to form an image of what appears to the viewer to be a three-dimensional object.
Another technique is referred to as "ray-casting," in which imaginary rays are passed from the eye of the viewer through pixels on the viewing surface, then through the object. Each ray accumulates the visual characteristics of the object as it passes through it. This accumulated, or integrated, data is then assigned to the pixel through which the ray passes. A combination of accumulated data from all rays results in a visible image on the viewing screen.
Since rays do not necessarily pass through voxels, it is necessary to interpolate data values as the ray passes through the object volume. Various techniques can be employed to perform such interpolation, with varying degrees of quality and realism resulting.
As noted, the realization of a two-dimensional image of a three-dimensional object, in real time, requires a significant amount of computing power, either in terms of hardware or software. At present, the fastest software implementation significantly sacrifices frame rate in order to meet a minimum Level of resolution, or sacrifices resolution in order to meet minimum frame rate requirements.
As for hardware, an improvement over the ray-casting approach previously described involves the use of parallel rays, each perpendicular to the viewing surface and cast through the three-dimensional object, thus enabling the processing of the object data space in "slices," a technique uniquely suited for parallel pipeline processing. Rows, or partial rows, of voxels within a first slice are processed by successive pipelines until the first slice has been processed. Then rows, or partial rows, from the next slice are processed in the same way. The voxels are thereby fetched and processed in an orderly fashion until the entire volume data set has been processed and an image has been formed.
Regardless of the technique utilized to realize a two-dimensional image representation of a three-dimensional object, it is desirable to provide some form of indicator which can be used to identify or mark positions within a real-time rendering of a three-dimensional volume data set during display. A cursor, well-known in contemporary word processing and graphical user interface applications, is a form of indicator, but which typically provides utility within a display of a two-dimensional workspace.
In the realm of volume graphics, three-dimensional cursors have been proposed before. However, the previously practiced techniques utilized to render a three-dimensional data space into a two-dimensional display have only enabled cursor generating methods which ultimately result in significant delays in rendering speed. For instance, in the texture-mapping technique previously described, a cursor can only be displayed in conjunction with the two-dimensional rendering of the desired object through the separate modeling of the desired cursor in three-dimensions and the subsequent interleaving or "blending" or the modelled cursor into the three-dimensioned data-space of the desired object, all prior to the initiation of the rendering process. In particular, a single axis cursor can be modelled as a rectangular solid having a discrete width and thickness (determined, for instance, in the x and y axes), and having a slope (in the z-axis) defined by a start and end point. Once so modelled, the sliced representation of the cursor is then blended into the parallel planes defining the object data space. Obviously, such cursor model generation and blending results in significant processing overhead since the geometry processed to achieve the two-dimensional rendering must be altered every time the cursor is relocated, or the desired object is re-oriented.
Additionally, prior art cursors for volume graphics have heretofore provided limited choice in terms of cursor appearance and interaction with the object to be rendered. Thus, not only has the provision of a cursor for these applications been detrimental to the realization of a real-time volume rendering system in terms of complexity and speed, it has also enabled a cursor of only limited configurability.